/*option 定义选项 
  参数1. (-t, --test) (-t|--test) (-t --test) 三种写法都可以，定义选项短（长）命名
  参数1. <n> 选项参数，可不定义 (<>是必填,[]是可选,[a...]是多个可选参数) 
  参数2. “测试” 针对该选项的描述
  参数3. (v, prev) => v + "-" + prev  修改返回结果
  参数4. "12" 默认值
*/
const { program } = require("commander");

/** 3个参数时 */
program.option("-a, --add <n>", "测试", "111").action((p) => {
  console.log("拿到的参数为:", p);
  // 输入33, 得到结果 { add: '33' }
});

/** 4个参数时 */
program
  .option("-m, --move <b>", "测试12", (v, prev) => v + "-" + prev, "12")
  .action((p) => {
    console.log("拿到的参数为12:", p);
    // 输入33, 得到结果 { test: '33-12' }
  });

/** option选项配置可选参数 [m] */
program.option("-t, --test [m]", "测试", 321).action((v) => {
  // 执行 node ./option.js
  console.log("得到结果:", v, "默认值:", program.opts().test);
  // 得到结果: { test: 321 } 默认值: 321  未传入选项参数，则拿到默认值
  /* 执行 node ./option.js -t 00
    console.log("得到结果:", v, "默认值:", program.opts().test);
    得到结果:{ test: '00' } 默认值: 00 传入00 则会覆盖默认值
  */
});

program.parse();
